package com.leo.biz.service.rediszkagent;

import com.leo.biz.constants.ConfigCentre;
import com.leo.biz.service.pub.TypeUtils;
import com.leo.biz.service.zookeeper.ZkClient;
import org.slf4j.Logger;
import org.springframework.stereotype.Service;

import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by leo on 2016/11/4.
 */
@Service
public class RedisZkAgent {

    static Logger logger = org.slf4j.LoggerFactory.getLogger(RedisZkAgent.class);

    public RedisZkAgent()
    {
        try {
            ZkClient.register(ConfigCentre.getRedisClusterPath(),"Redis1",getRedisFromCfg());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static byte[] getRedisFromCfg()
    {
        Map<String,String> cfg=new HashMap<>();
        cfg.put("ip","192.168.32.128");
        cfg.put("port","6379");
        cfg.put("timeout","2000");
        cfg.put("passwd", "123456");
        String jsonStr= TypeUtils.map2Jsonstr(cfg);
        logger.info(jsonStr);

        byte[] ret=null;
        try {
            ret=jsonStr.getBytes("UTF-8");
        } catch (UnsupportedEncodingException e) {
            logger.error("parse redis cfg failed:"+jsonStr);
            e.printStackTrace();
            ret=null;
        }
        return ret;
    }

//    /**向zookeeper注册redis的配置信息*/
//    public static void register() throws Exception {
//        // 创建一个与服务器的连接
//        ZooKeeper zk = new ZooKeeper("localhost:2181", 30000, new Watcher() {
//            // 监控所有被触发的事件
//            public void process(WatchedEvent event) {
//                logger.info("新事件触发:" + event.getState()+":"+event.getType().name()+":"+event.getWrapper()+":"+event.getPath());
//
//
//            }
//
//        });
//        logger.info("zk session time out:"+zk.getSessionTimeout());
//
//        if(zk.exists(ROOT, true) == null)
//        {
//            // 创建一个总的目录，并不控制权限，这里需要用持久化节点，不然下面的节点创建容易出错
//            zk.create(ROOT, ROOT.getBytes("UTF-8"), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//        }
//        if(zk.exists(ROOT+ACTIVE_SERVER, true)==null)
//        {
//            String ret=zk.create(ROOT+ACTIVE_SERVER, getRedisFromCfg(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
//            logger.info("create zk node:path="+ROOT+ACTIVE_SERVER+"| datas="+"ACTIVE_SERVER_CFG"+"| ret="+ret);
//        }
//
//        if(zk.exists(ROOT, true) != null)
//        {
//            List<String> children = zk.getChildren(ROOT, true);
//            for (int i=0;i<children.size();i++)
//            {
//                logger.info(children.get(i).toString());
//            }
//            logger.info(children.size() + "");
//
//        }
//        // 根目录得最后删除的
//
//        //zk.close();
//    }
}
